// definiciones de estructuras usadas en el TP-SO-2011
//estructura archivo de configuracion PFS linux!

typedef struct tipo_PfsConfig{
	char vchId[12];
	char vchIpDisc[16];
	unsigned short shPuertoDisc;
	char vchPathDir[16];
	int iCantConex;
	int iTamCache;
}st_SerPfs;

//--------------------------------------------------
//  ESTRUCTURAS LISTAS ARCHIVOS
//--------------------------------------------------

typedef struct tipo_array{
	char vchNombre[15];
	struct tipo_file *plsFile;
	struct tipo_sector *plsSector;
	struct tipo_array *sgte;
} st_Array;

typedef struct tipo_file{
	char vchNombre[15];
	char vchOwner[20];
	char vchPermiso[5];
	int iTamanio;
	struct tipo_sector *plsSector;
	struct tipo_file *sgte;
} st_File;

typedef struct tipo_sector{
	int iSector;
	struct tipo_sector *sgte;
} st_Sector;


//-------------------------------------------
//  ESTRUCTURAS IPC 
//-------------------------------------------


// HEADER BASE IPC
typedef struct headeripc
{
	unsigned char type;  		// CAMPO QUE INDICA EL PROTOCOLO UTILIZADO
	long payloadlength;	 		// INDICA LA LONGITUD DE DATOS A ENVIAR	
} tipo_header_ipc;


typedef struct tipo_result
{
        char dn[60];
		char utnDAName[8];
		char objectClass[8];
		char objectClass2[20];
		char utnSectorContent[512];
		long utnSectorId;
} st_Result;

		
/*estructura que devuelve la busqueda de archivos*/
typedef struct tipo_infoFile
{
		char dn[200];
		char utnDAName[8];
		char objectClass[8];
		char objectClass2[20];
		char utnSectorList[512];
		char utnFileName[40];
		char utnFilePermissions[20];
		char utnSize[8];
		char utnFileOwner[30];
} st_infoFile;

/*estructura para devolver al VSK con infoArchivo*/
typedef struct tipo_infoFileVsk
{
		//char daName[8];
		char freeSectors[512];
		//char fileName[40];
		char size[8];
} st_infoFileVsk;

//-------------------------------------------
//  ESTRUCTURAS FUSE
//-------------------------------------------

/*
static struct fuse_operations pfs_oper = {
	.create = pfs_create,
	.open = pfs_open,
	//.read   = pfs_read,
	//.write = pfs_write,
	//.flush = pfs_flush,
	//.release = pfs_release,
	//.truncate = pfs_truncate,
	//.unlink = pfs_unlink,
	//.mkdir = pfs_mkdir,
	.readdir = pfs_readdir,
	//.rmdir = pfs_rmdir,
    .getattr   = pfs_getattr,
    // .rename = pfs_rename
  };
*/
//-------------------------------------------
//  ESTRUCTURAS FAT32
//-------------------------------------------
/*
struct boot
{
    unsigned char jump[3] ;
    char OEMname[8] ;
    shortint bps ;
    unsigned char spc ;
    shortint reservedsec ;
    unsigned char fatcopies ;
    shortint maxdirentries ;
    shortint totalsec ;
    unsigned char mediadesc ;
    shortint secperfat ;
    shortint secpertrack ;
    shortint noofsides ;
    longint hidden ;
    longint hugesec ;
    unsigned char drivenumber ;
    unsigned char reserved ;
    unsigned char bootsignature ;
    longint volumeid ;
    char volumelabel[11] ;
    char filesystype[8] ;
    unsigned char unused[450] ;
} ;
*/   
